﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Data;
using DataAccess;
using Utility;

namespace Web.giamthi
{
    public partial class UCQuanLyXP : System.Web.UI.UserControl
    {
        XepPhongControl xpCtr = new XepPhongControl();
        XepPhong xp = new XepPhong();
        PhanCongControl pcCtr = new PhanCongControl();
        PhongHocControl phCtr = new PhongHocControl();
        PhanCong pc = new PhanCong();
        Lich lich = new Lich();
        LichControl lichCtr = new LichControl();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadPhanCong();
                LoadPhong();
                LoadXepPhong();
            }
        }

        // hiển thị danh sách xếp phòng 
        private void LoadPhanCong()
        {
            GridView1.DataSource = pcCtr.GetListPhanCong();
            GridView1.DataBind();
        }

        // hiển thị [hòng học trong combobox
        private void LoadPhong()
        {
            foreach (PhongHoc ph in phCtr.GetListPhongHoc())
            {
                ddlPhong.Items.Add(ph.TenPH + "-" + ph.MaPH.ToString());
            }
            ddlPhong.DataBind();
        }

        // hiển thị thông tin của 1 dòng trong bảng xếp phòng đã chọn
        private void LoadXepPhong()
        {
            if (Request.QueryString["id"] != null)
            {
                xp = xpCtr.GetXepPhongById(Int32.Parse(Request.QueryString["id"].ToString()));
                lblXPId.Text = xp.XPID.ToString();
                lblPCId.Text = xp.PCID.ToString();
                txtCa.Text = xp.Ca.ToString();
                txtTuan.Text = xp.Tuan.ToString();
                ddlPhong.Text = xp.PhongHoc.TenPH + "-" + xp.PhongHoc.MaPH.ToString();
            }
            else
            {
                clear();
            }
        }

        // tự động tạo lịch học theo phân công ( insert dữ liệu vào bảng lịch )
        private void TaoLich()
        {
            pc = pcCtr.GetPhanCongById(Int32.Parse(lblPCId.Text));
            int tst = Int32.Parse(pc.TongSoTiet.ToString());
            int st = Int32.Parse(pc.SoTiet.ToString());
            int t = tst / st;

            for (int i = 1; i <= t; i++)
            {
                Lich l = new Lich();
                l.SoTiet = st;
                l.Tuan = i;
                l.MaPH = ddlPhong.SelectedValue.ToString().Split('-')[1].ToString();
                l.PCID = pc.PCID;

                lichCtr.InsertLich(l);
            }
        }

        // chọn 1 dòng trong gridview phân công
        protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            lblPCId.Text = WebHelper.GetIdGridView(GridView1, 0, e).ToString();

        }

        // insert , update cếp phòng và insert lịch
        protected void btnLuu_Click(object sender, EventArgs e)
        {
            if (KiemTra() == false)
            {
                return;
            }
            else
            {
                xp.PCID = Int32.Parse(lblPCId.Text);
                xp.MaPH = ddlPhong.SelectedValue.ToString().Split('-')[1].ToString();
                xp.Ca = txtCa.Text;
                xp.Tuan = Int32.Parse(txtTuan.Text);

                if (lblXPId.Text.Length == 0)
                {
                    xpCtr.InsertXepPhong(xp);
                    TaoLich();
                }
                else
                {
                    xp.XPID = Int32.Parse(lblXPId.Text);
                    xpCtr.UpdateXepPhong(xp);
                }
                WebHelper.ShowMessage("Cập nhật thành công !", Page);
                clear();
            }
        }

        protected void btnHuy_Click(object sender, EventArgs e)
        {
            clear();
        }

        // kiểm tra dữ liệu
        public bool KiemTra()
        {
            if (CheckValidate.CheckNull(lblPCId.Text))
            {
                WebHelper.ShowMessage("Chọn mã phân công !", Page);
                return false;
            }

            else if (CheckValidate.CheckNull(txtCa.Text))
            {
                WebHelper.ShowMessage("Nhập ca !", Page);
                return false;
            }
            else if (CheckValidate.CheckNull(txtTuan.Text))
            {
                WebHelper.ShowMessage("Nhập tuần !", Page);
                return false;
            }
            else if (CheckValidate.CheckIntNumber(txtTuan.Text) == false)
            {
                WebHelper.ShowMessage("Tuần phải nhập số !", Page);
                return false;
            }

            else
            {
                return true;
            }
        }

        private void clear()
        {
            lblPCId.Text = "";
            lblXPId.Text = "";
            txtCa.Text = "";
            txtTuan.Text = "";
        }
    }
}